import {
  ipcMain
} from 'electron'
const { autoUpdater } = require('electron-updater')
const target = process.env.target || 'dev'
const config = require('../../package')
const feedUrl = `${config.build.publish.url}/${target}/` // 更新包位置
export default webContents => {
  // 配置安装包远端服务器
  autoUpdater.setFeedURL(feedUrl)

  // 下面是自动更新的整个生命周期所发生的事件
  autoUpdater.on('error', function (message) {
    sendUpdateMessage('error', message)
  })
  autoUpdater.on('checking-for-update', function (message) {
    sendUpdateMessage('checking-for-update', message)
  })
  autoUpdater.on('update-available', function (message) {
    sendUpdateMessage('update-available', message)
  })
  autoUpdater.on('update-not-available', function (message) {
    sendUpdateMessage('update-not-available', message)
  })

  // 更新下载进度事件
  autoUpdater.on('download-progress', function (progressObj) {
    sendUpdateMessage('downloadProgress', progressObj)
  })
  // 更新下载完成事件
  autoUpdater.on('update-downloaded', function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {
    sendUpdateMessage('isUpdateNow')
    ipcMain.on('updateNow', (e, arg) => {
      autoUpdater.quitAndInstall()
    })
  })

  // 主进程监听渲染进程传来的信息
  ipcMain.on('update', (e, arg) => {
    console.log('update')
    autoUpdater.checkForUpdates()
  })

  // 主进程主动发送消息给渲染进程函数
  function sendUpdateMessage (message, data) {
    webContents.send('message', { message, data })
  }
}
